/*
*    Phantom v2.0 GUI Automation Software
*    Copyright (C) 2009  John C. Van Arsdall (john@phantomtest.com)
*
*    This program is free software; you can redistribute it and/or modify
*    it under the terms of the GNU General Public License as published by
*    the Free Software Foundation; either version 2 of the License, or
*    (at your option) any later version.
*
*    This program is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*    GNU General Public License for more details.
*
*    You should have received a copy of the GNU General Public License along
*    with this program; if not, write to the Free Software Foundation, Inc.,
*    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*/
// JavaTargetExec.cpp : Defines the class behaviors for the application.
//

#include "stdafx.h"
#include "JavaTargetExec.h"
#include "JavaTargetExecDlg.h"
#include <direct.h>


#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CJavaTargetExecApp

BEGIN_MESSAGE_MAP(CJavaTargetExecApp, CWinApp)
	ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()


// CJavaTargetExecApp construction

CJavaTargetExecApp::CJavaTargetExecApp()
{
	// TODO: add construction code here,
	// Place all significant initialization in InitInstance
}


// The one and only CJavaTargetExecApp object

CJavaTargetExecApp theApp;


// CJavaTargetExecApp initialization

BOOL CJavaTargetExecApp::InitInstance()
{
	CWinApp::InitInstance();

	// Standard initialization
	// If you are not using these features and wish to reduce the size
	// of your final executable, you should remove from the following
	// the specific initialization routines you do not need
	// Change the registry key under which our settings are stored
	// TODO: You should modify this string to be something appropriate
	// such as the name of your company or organization
	SetRegistryKey(_T("Local AppWizard-Generated Applications"));

//	CJavaTargetExecDlg dlg;
//	m_pMainWnd = &dlg;
//	INT_PTR nResponse = dlg.DoModal();
//	if (nResponse == IDOK)
//	{
		// TODO: Place code here to handle when the dialog is
		//  dismissed with OK
//	}
//	else if (nResponse == IDCANCEL)
//	{
		// TODO: Place code here to handle when the dialog is
		//  dismissed with Cancel
//	}


  CString str;
	char* sCmd = ".\\jre\\bin\\javaw.exe -jar JavaTarget.jar";

	// ------- Set Starting Directory -----------------------
	char buff[4096];
	GetModuleFileName(NULL, buff, 4095);
  str = buff;
	str = str.Mid(0, str.ReverseFind('\\'));
	chdir((LPCTSTR)str);

	STARTUPINFO Start;
	ZeroMemory(&Start, sizeof(Start));
	Start.cb = sizeof(Start);
	if(!CreateProcess(NULL, sCmd, NULL, NULL, FALSE, NULL, NULL, NULL, &Start, &pInfo))
	{
		DWORD Err = GetLastError();
		if(Err == ERROR_FILE_NOT_FOUND)
		{
			str = str + "\\jre\\bin\\javaw.exe Not Found.  Please install Phantom Test Driver.";
			MessageBox(NULL, (LPCTSTR)str, "JavaTarget Error", MB_OK);
			pInfo.hProcess = NULL;
			return FALSE;
		}
		else
		{
			pInfo.hProcess = NULL;
			return FALSE;
		}			
	}

	WaitForSingleObject(pInfo.hThread, INFINITE);
	CloseHandle(pInfo.hThread);
	CloseHandle(pInfo.hProcess);
	pInfo.hProcess = NULL;




	// Since the dialog has been closed, return FALSE so that we exit the
	//  application, rather than start the application's message pump.
	return FALSE;
}
